package cn.com.yusys.yusp.admin.Utils;

import cn.com.yusys.yusp.admin.domain.SendMessageProperties;
import com.esms.MessageData;
import com.esms.PostMsg;
import com.esms.common.entity.Account;
import com.esms.common.entity.GsmsResponse;
import com.esms.common.entity.MTPack;
import com.esms.common.entity.MTPack.MsgType;
import com.esms.common.entity.MTPack.SendType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;

/**
 * @author zoie
 */
@Component
public class Smstoone {
    @Async("taskExecutor")
    public String sendMessage(List<MessageData> list, List list2) {
        /**
         * 用户名 ：密码 ： 在 bip.p 文件中配置
         */
        String mesUse = SendMessageProperties.MESUSE;
        String mesPas = SendMessageProperties.MESPAS;

        if (mesUse.equals("") || mesPas.equals("")) {
            System.out.println("用户名或密码 不正确请检查bip文件");
            return "用户名或密码 不正确请检查bip文件";
        }
        Account account = new Account(mesUse, mesPas);//
        PostMsg pm = new PostMsg();
        String ip = SendMessageProperties.MESIP; // IP
        int sendPort = Integer.parseInt(SendMessageProperties.SENDPORT); // 发送端口
        int getPort = Integer.parseInt(SendMessageProperties.GETPORT);  //用于获取账号信息、上行、状态报告等等
        pm.getCmHost().setHost(ip, sendPort);//设置网关的IP和port，用于发送信息
        pm.getWsHost().setHost(ip, getPort);//设置网关的IP和port，用于获取账号信息、上行、状态报告等等

        MTPack pack = new MTPack();
        pack.setBatchID(UUID.randomUUID());// 短信ID
        pack.setBatchName(list2.get(0) + "-" + list2.get(1) + "-" + Math.random());// 使用当前登录人id+当前登录人名字—加时间
        pack.setSendType(SendType.GROUP);// 群发 MASS ,组发 GROUP
        pack.setMsgType(MsgType.SMS);// 消息类型 1 短信 2 彩信 SMS 应该是短信
        //pack.setBizType(1);
        pack.setDistinctFlag(false);


        //ArrayList<MessageData> msgs = new ArrayList<MessageData>();
        String qfFlag = "01";// 单发
        if (list.size() > 0) {

        } else {
            System.out.println("发送内容为空");
            return "发送内容为空";
        }
        System.out.println("非定时发送开始......");
        pack.setMsgs(list);

        System.out.println("用户名：" + mesUse);
        System.out.println("密码：" + mesPas);
        System.out.println("IP地址：" + ip);
        System.out.println("发送端口：" + sendPort);
        System.out.println("上行端口：" + getPort);
        System.out.println("-------------短信发送开始------------");
        GsmsResponse resp = null;
        try {

            resp = pm.post(account, pack);
            System.out.println("-------------短信发送成功------------");

        } catch (Exception e) {
            System.err.println("-------------短信发送失败------------");
            System.err.println("异常信息为：" + e.getMessage());
            resp.setResult(99);
            resp.setMessage("短信发送失败");
        }
        //resp =new GsmsResponse();
        //resp.setResult(99);
        //resp.setMessage("短信发送失败");
        //GsmsResponse resp=new GsmsResponse();
        System.out.println(resp);
        System.out.println("您的UUID为：" + resp.getUuid());
        System.out.println("系统返回值为：" + resp.getResult() + "  " + resp.getMessage());// 返回系统返回值 枚举类型
        System.out.println(list);
        int m = resp.getResult();
        return String.valueOf(m);
    }
}
